package packageWA;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.sql.ResultSet;
import java.sql.SQLException;

public class CrearEncuesta extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JLabel lblTtulo;
	private JTextField txtTitulo;
	private JLabel lblDescripcin;
	private JLabel lblAadirPregunta;
	private JLabel lblPreguntasAadidas;
	private JComboBox cbxPreguntas;
	private JTextField txtDesc;
	private JTextField txtAnadir;
	private JButton btnAadir;
	private JButton btnEliminar;
	private JButton btnCrearEncuesta;
	private JButton btnCancelar;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					CrearEncuesta frame = new CrearEncuesta();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public CrearEncuesta() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 715, 388);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		lblTtulo = new JLabel("T\u00EDtulo:");
		lblTtulo.setBounds(60, 51, 61, 16);
		contentPane.add(lblTtulo);
		
		txtTitulo = new JTextField();
		txtTitulo.setBounds(193, 45, 215, 28);
		contentPane.add(txtTitulo);
		txtTitulo.setColumns(10);
		
		lblDescripcin = new JLabel("Descripci\u00F3n:");
		lblDescripcin.setBounds(60, 113, 87, 16);
		contentPane.add(lblDescripcin);
		
		lblAadirPregunta = new JLabel("A\u00F1adir pregunta:");
		lblAadirPregunta.setBounds(60, 178, 110, 16);
		contentPane.add(lblAadirPregunta);
		
		lblPreguntasAadidas = new JLabel("Preguntas a\u00F1adidas:");
		lblPreguntasAadidas.setBounds(60, 245, 134, 16);
		contentPane.add(lblPreguntasAadidas);
		
		cbxPreguntas = new JComboBox();
		cbxPreguntas.setBounds(193, 241, 393, 27);
		contentPane.add(cbxPreguntas);
		cbxPreguntas.addItem("---Preguntas---");
		
		txtDesc = new JTextField();
		txtDesc.setBounds(193, 107, 471, 28);
		contentPane.add(txtDesc);
		txtDesc.setColumns(10);
		
		txtAnadir = new JTextField();
		txtAnadir.setBounds(193, 172, 393, 28);
		contentPane.add(txtAnadir);
		txtAnadir.setColumns(10);
		
		btnAadir = new JButton("A\u00F1adir");
		btnAadir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(txtAnadir.getText().isEmpty()){
					//Si no ha escrito nada en la caja que de un mensaje
					JOptionPane.showMessageDialog(null,"Introduce una pregunta para añadir");
				}
				else{
					//AÔøΩadimos la pregunta al combo y limpiamos el text
					cbxPreguntas.addItem(txtAnadir.getText());
					txtAnadir.setText("");
				}
			}
		});
		btnAadir.setBounds(584, 173, 80, 29);
		contentPane.add(btnAadir);
		
		btnEliminar = new JButton("Eliminar");
		btnEliminar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				//Eliminar preguntas del combo
				if(cbxPreguntas.getSelectedIndex() == 0){
					//Si no ha seleccionado ninguna pregunta que nos avise
					JOptionPane.showMessageDialog(null,"Seleccione la pregunta que desee eliminar");
				}
				else{
					//Eliminamos la pregunta seleccionada del combo
					cbxPreguntas.removeItemAt(cbxPreguntas.getSelectedIndex());
					cbxPreguntas.setSelectedIndex(0);
				}
			}
		});
		btnEliminar.setBounds(584, 240, 80, 29);
		contentPane.add(btnEliminar);
		
		btnCrearEncuesta = new JButton("Crear encuesta");
		btnCrearEncuesta.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//Comprobamos campos requeridos
				if(txtTitulo.getText().isEmpty()){
					JOptionPane.showMessageDialog(null,"El campo TÔøΩtulo es obligatorio");
				}
				else{
					//AÔøΩadimos encuesta base de datos
					try {
						insertar();
						JOptionPane.showMessageDialog(null,"La encuesta ha sido añadida");
						dispose();
					} catch (SQLException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
				}
			}
		});
		btnCrearEncuesta.setBounds(238, 308, 117, 29);
		contentPane.add(btnCrearEncuesta);
		
		btnCancelar = new JButton("Cancelar");
		btnCancelar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//Volvemos a la pantalla anterior
				dispose();
			}
		});
		btnCancelar.setBounds(381, 308, 117, 29);
		contentPane.add(btnCancelar);
	}
	
	private void insertar() throws SQLException{
		
		String sql;
		
		//Crear encuesta
		sql = "INSERT INTO Encuesta (titulo, descripcion) VALUES ('" + txtTitulo.getText() + "', '" + txtDesc.getText() + "');";
		GestorBD.getInstance().insertar(sql);
		
		//Obtenemos codigo de encuesta
		ResultSet rs = GestorBD.getInstance().consulta("SELECT idEncuesta FROM Encuesta WHERE titulo='" + txtTitulo.getText() + "' AND descripcion='" + txtDesc.getText() + "';");
		rs.next();
		int id = rs.getInt("idEncuesta");
	


		//A�adimos preguntas
		if(cbxPreguntas.getItemCount() > 1){
			for(int i = 1; i < cbxPreguntas.getItemCount(); i++){
				sql = "INSERT INTO Pregunta (idEncuesta, Enunciado) VALUES (" + id + ", '" + cbxPreguntas.getItemAt(i) + "');";
				GestorBD.getInstance().insertar(sql);
			}
		}
	}
}
